import {combination} from "../../utils/utils";

/**
 * 拆分sku编码
 */
class SkuCode {
    code
    spuId
    totalSegments = []

    constructor(code) {
        this.code = code
        this._splitToSegments()
    }

    /**
     * 拆分
     *
     * 尽量少写显式for循环
     * 多用函数 类似map find 等等
     * 真的需要多个for循环的话 通过类 方法进行修饰 显得代码更加优雅
     * 封装方法
     *
     * 组合 两种规格有多少种组合计算出来 通过组合算法
     * @private
     */
    _splitToSegments() {
        // 2$1-45#3-9#4-14
        const spuAndSpec = this.code.split("$")
        this.spuId = spuAndSpec[0]

        const specCodeArray = spuAndSpec[1].split("#")
        const length = specCodeArray.length

        for (let i = 1; i <= length; i++) {
            // 排列组合函数
            const segments = combination(specCodeArray, i)
            const newSegments = segments.map(segs => {
                return segs.join("#")
            })
            this.totalSegments = this.totalSegments.concat(newSegments)
            console.log(newSegments)
        }
    }
}

export {
    SkuCode
}